package com.rockcent.service;

import com.rockcent.common.common.PageResult;
import com.rockcent.mall.lib.dto.MerchantProductStatisticsDto;

import java.util.List;

/**
 * Created by Marco on 16-12-15.
 */
public interface MerchantProductStatisticsService {

    //展示次数
    Long getProductShowCount( Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate);

    //访问人数
    Long getProductViewCustomerCount( Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //按月访问人数
    List<MerchantProductStatisticsDto> getProductViewCustomerCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //按月访问次数
    List<MerchantProductStatisticsDto> getProductViewCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //访问次数
    Long getProductViewCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //下单数量
    Long getProductSaleCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //按月下单人数
    List<MerchantProductStatisticsDto> getProductSaleCustomerCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //按月下单数量
    List<MerchantProductStatisticsDto> getProductSaleCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //支付数量
    Long getProductSalePayCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //核销人数
    Long getProductVerifyCustomerCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //按月核销人数
    List<MerchantProductStatisticsDto> getProductVerifyCustomerCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //核销数量
    Long getProductVerifyCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //按月核销数量
    List<MerchantProductStatisticsDto> getProductVerifyCountByMonth(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String groupBy);

    //产品详细数据
    PageResult<MerchantProductStatisticsDto> getProductStatisticsList(PageResult page, Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String keyword, Long channelId);

    //下单人数
    Long getProductSaleCustomerCount(Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, Long channelId);

    //产品统计详细数据
    PageResult<MerchantProductStatisticsDto> getProductsStatistics(PageResult page, Long mallId, Long merchantId, Long productId, String sourceType, String type, String startDate, String endDate, String keyword);
}
